Factor Analysis of FSS-BR
Hidden to avoid identification hidden@example.com
Prerequisites
Loading libs (packages)
wants <- c('mirt','semPlot','semTools','psych','parameters','olsrr','lavaan','knitr','matrixStats','stats','dplyr','readr')
has <- wants %in% rownames(installed.packages())
if (any(!has)) install.packages(wants[!has])
Loading internal functions
#' Calculate factors from cfa model
#'
#' This functions calculate composite reliability values of factors
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param return.total logical indicating whether to return a final column containing the reliability of a composite of all items.
#' @return Reliability values of each factor in each group.
getFactors <- function(fit, secondFactor = NULL) {
sl <- standardizedSolution(fit)
sl <- sl[sl$op == '=~',]
lfactors <- lapply(unique(sl$lhs), FUN = function(lhs) {
sl$rhs[sl$lhs == lhs]
})
names(lfactors) <- unique(sl$lhs)
if (!is.null(secondFactor))
lfactors[[secondFactor]] <- NULL
return(lfactors)
}
#' Calculate composite reliability of factors
#'
#' This functions calculate composite reliability values of factors
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param return.total logical indicating whether to return a final column containing the reliability of a composite of all items.
#' @return Reliability values of each factor in each group.
compReliability <- function(fit, return.total = F) {
toReturn <- sapply(getFactors(fit), FUN = function(x) {
sl <- standardizedSolution(fit)
sl <- sl$est.std[sl$op == "=~" & sl$rhs %in% x]
names(sl) <- x
re <- 1 - sl^2
sum(sl)^2 / (sum(sl)^2 + sum(re))
})
if (return.total) {
sl <- standardizedSolution(fit)
sl <- sl$est.std[sl$op == "=~"]
re <- 1 - sl^2
toReturn <- c(toReturn, total=sum(sl)^2 / (sum(sl)^2 + sum(re)))
}
toReturn
}
#' Asessing convergent and discriminant validity
#'
#' This functions assess the discriminant and convergent validity of factors
#' based on Heterotrait-Monotrait Ratio (semTools::htmt).
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param lnv string with the lavaan syntax of the fit CFA model.
#' @param dat data.frame with the data used in the CFA model
#' @param secondFactor second factor to be used in the CFA model
#' @return Composite Reliability, AVE and matrix of Heterotrait-Monotrait Ratio
convergentDiscriminantValidity <- function(fit, lvn, dat, secondFactor = NULL) {
library(olsrr)
library(semTools)
CR <- compReliability(fit)
AVE <- reliability(fit)[c("avevar"),]
if (!is.null(secondFactor)) {
AVE[secondFactor] <- reliability(fit, return.total = TRUE)["avevar","total"]
}
factors <- getFactors(fit, secondFactor)
for (f1 in names(factors)) dat[[f1]] <- rowSums(dat[,factors[[f1]]])
if (is.null(secondFactor)) secondFactor <- 'F0'
dat[[secondFactor]] <- rowSums(dat[,names(factors)])
mdl <- lm(as.formula(paste0(secondFactor,' ~ ', paste0(names(factors), collapse = '+'))), data = dat)
VIF <- ols_vif_tol(mdl)$VIF
VIF.i <- sapply(names(factors), FUN = function(f1) {
mdl <- lm(as.formula(paste0(f1,' ~ ',paste0(factors[[f1]], collapse = '+'))), data = dat)
max(ols_vif_tol(mdl)$VIF)
})
lvn2 <- stringr::str_replace(lvn, paste0("\n\\s*",secondFactor,"\\s*.*=~\\s*.*\n","\n"),"\n\n")
corr.df <- as.table(inspect(fit, "cor.lv"))
corr.df[upper.tri(corr.df)] <- NA
htmt.df <- as.table(semTools::htmt(lvn2, dat))
if (is.null(secondFactor) || secondFactor != 'F0') {
cnames <- colnames(htmt.df)
htmt.df <- cbind(htmt.df, rep(NA, nrow(htmt.df)))
htmt.df <- rbind(htmt.df, rep(NA, ncol(htmt.df)))
rownames(htmt.df) <- c(cnames, secondFactor)
colnames(htmt.df) <- c(cnames, secondFactor)
}
htmt.df[lower.tri(htmt.df)] <- NA
df <- corr.df
df[upper.tri(corr.df)] <- htmt.df[upper.tri(df)]
for (cname in names(AVE)) df[cname,cname] <- sqrt(AVE[[cname]])
as.data.frame(cbind(CR,AVE, VIF, VIF.i, df))
}
#' Summarize fit indexes of CFA models
#'
#' This functions summarize fit indexes from CFA models
#'
#' @param fits a list of lavaan objects with CFA models
#' @return fit indexes results of CFA models
summariseFits <- function(fits, indexes = c(
"chisq","df","gfi","agfi","cfi","tli","srmr",
"rmsea","rmsea.ci.lower","rmsea.ci.upper")) {
df_fit <- do.call(rbind, lapply(fits, FUN = function(fit) {
dat <- as.list(round(fitMeasures(fit,indexes), 3))
rbind(c(dat[c("chisq","df")],"chisq/df"=round(dat$chisq/dat$df,3)
, dat[c("gfi","agfi","cfi","tli","srmr","rmsea")]
, "rmsea.ci" = paste0("[",dat$rmsea.ci.lower,"; ",dat$rmsea.ci.upper,"]")))
}))
rownames(df_fit) <- names(fits)
return(df_fit)
}
Loading data
library(readr)
library(dplyr)
fss <- read.csv("../data/fss.csv")
fss <- select(fss, starts_with("Q"))
Checking assumptions
(parameters::check_sphericity_bartlett(fss))
# Test of Sphericity
Bartlett's test of sphericity suggests that there is sufficient significant correlation in the data for factor analysis (Chisq(630) = 6795.14, p < .001).
- Obs: We didnt use bartlett.test() because it performs
homogeneity of variances
library(psych)
(kmo_mod <- psych::KMO(fss))
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = fss)
Overall MSA = 0.87
MSA for each item =
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19
0.90 0.89 0.88 0.91 0.90 0.84 0.90 0.69 0.80 0.89 0.92 0.84 0.85 0.91 0.91 0.80 0.85 0.81 0.85
Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30 Q31 Q32 Q33 Q34 Q35 Q36
0.82 0.90 0.85 0.88 0.92 0.89 0.88 0.92 0.83 0.65 0.93 0.88 0.86 0.94 0.80 0.77 0.87
Summarizing assumptions
df <- data.frame(item=colnames(fss))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(mean(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(median(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(sd(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(skew(fss[[x]])[[1]], digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(kurtosi(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(shapiro.test(fss[[x]])$statistic, digits = 3)})))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) {
p.val <- shapiro.test(fss[[x]])$p
if (p.val < 0.001)
return("< 0.001")
else
return(round(p.val, digits = 3))
})))
df <- cbind(df, as.vector(round(kmo_mod$MSAi, digits =3)))
colnames(df) <- c("Item","M","Mdn","SD","Skew","Kurtosis","statistic","p.val","MSAi")
knitr::kable(df, digits = 3)
| Q1 |
3.987 |
4 |
0.831 |
-0.960 |
1.368 |
0.814 |
< 0.001 |
0.901 |
| Q2 |
3.167 |
3 |
1.164 |
-0.202 |
-0.919 |
0.906 |
< 0.001 |
0.891 |
| Q3 |
3.306 |
3 |
0.981 |
-0.142 |
-0.738 |
0.895 |
< 0.001 |
0.884 |
| Q4 |
3.717 |
4 |
0.886 |
-0.598 |
0.164 |
0.862 |
< 0.001 |
0.909 |
| Q5 |
3.551 |
4 |
0.989 |
-0.425 |
-0.452 |
0.886 |
< 0.001 |
0.902 |
| Q6 |
3.136 |
3 |
1.225 |
-0.229 |
-1.062 |
0.895 |
< 0.001 |
0.841 |
| Q7 |
3.515 |
4 |
1.032 |
-0.492 |
-0.433 |
0.885 |
< 0.001 |
0.902 |
| Q8 |
3.071 |
3 |
1.199 |
-0.128 |
-0.873 |
0.914 |
< 0.001 |
0.688 |
| Q9 |
3.505 |
4 |
1.032 |
-0.520 |
-0.238 |
0.890 |
< 0.001 |
0.800 |
| Q10 |
3.793 |
4 |
1.003 |
-0.590 |
-0.217 |
0.873 |
< 0.001 |
0.892 |
| Q11 |
3.414 |
4 |
1.041 |
-0.352 |
-0.596 |
0.897 |
< 0.001 |
0.919 |
| Q12 |
3.076 |
3 |
1.048 |
-0.072 |
-0.790 |
0.906 |
< 0.001 |
0.838 |
| Q13 |
3.167 |
3 |
0.992 |
-0.089 |
-0.756 |
0.898 |
< 0.001 |
0.849 |
| Q14 |
3.598 |
4 |
1.120 |
-0.694 |
-0.309 |
0.867 |
< 0.001 |
0.913 |
| Q15 |
3.639 |
4 |
0.910 |
-0.458 |
-0.250 |
0.873 |
< 0.001 |
0.909 |
| Q16 |
3.331 |
4 |
1.156 |
-0.226 |
-0.989 |
0.896 |
< 0.001 |
0.799 |
| Q17 |
3.278 |
3 |
1.018 |
-0.216 |
-0.632 |
0.903 |
< 0.001 |
0.846 |
| Q18 |
3.043 |
3 |
1.082 |
-0.049 |
-0.710 |
0.915 |
< 0.001 |
0.810 |
| Q19 |
3.553 |
4 |
1.024 |
-0.429 |
-0.447 |
0.892 |
< 0.001 |
0.851 |
| Q20 |
3.530 |
4 |
1.124 |
-0.388 |
-0.730 |
0.895 |
< 0.001 |
0.815 |
| Q21 |
3.366 |
3 |
0.978 |
-0.282 |
-0.364 |
0.900 |
< 0.001 |
0.902 |
| Q22 |
3.242 |
3 |
1.017 |
-0.254 |
-0.867 |
0.879 |
< 0.001 |
0.853 |
| Q23 |
3.510 |
4 |
0.997 |
-0.405 |
-0.433 |
0.891 |
< 0.001 |
0.884 |
| Q24 |
3.682 |
4 |
0.900 |
-0.398 |
-0.395 |
0.873 |
< 0.001 |
0.923 |
| Q25 |
3.386 |
4 |
1.031 |
-0.340 |
-0.701 |
0.888 |
< 0.001 |
0.893 |
| Q26 |
3.323 |
3 |
1.070 |
-0.312 |
-0.684 |
0.900 |
< 0.001 |
0.882 |
| Q27 |
3.442 |
4 |
0.978 |
-0.326 |
-0.367 |
0.897 |
< 0.001 |
0.916 |
| Q28 |
3.232 |
3 |
1.152 |
-0.074 |
-0.875 |
0.912 |
< 0.001 |
0.827 |
| Q29 |
3.043 |
3 |
1.107 |
0.016 |
-0.886 |
0.909 |
< 0.001 |
0.648 |
| Q30 |
3.841 |
4 |
0.959 |
-0.544 |
-0.399 |
0.866 |
< 0.001 |
0.927 |
| Q31 |
3.578 |
4 |
0.926 |
-0.413 |
-0.410 |
0.875 |
< 0.001 |
0.876 |
| Q32 |
3.669 |
4 |
1.053 |
-0.577 |
-0.492 |
0.869 |
< 0.001 |
0.863 |
| Q33 |
3.702 |
4 |
0.867 |
-0.602 |
0.054 |
0.850 |
< 0.001 |
0.936 |
| Q34 |
3.409 |
4 |
1.234 |
-0.378 |
-0.930 |
0.892 |
< 0.001 |
0.796 |
| Q35 |
3.265 |
3 |
1.142 |
-0.246 |
-0.760 |
0.910 |
< 0.001 |
0.770 |
| Q36 |
3.846 |
4 |
1.053 |
-0.644 |
-0.386 |
0.862 |
< 0.001 |
0.868 |
Exploratory Factorial
Analysis (EFA)
library(psych)
(pfa_mod <- fa.parallel(fss, fm = 'wls', fa = 'fa', cor='poly', n.iter = 1, main = "", ylabel = "", plot = F))
Parallel analysis suggests that the number of factors = 9 and the number of components = NA
Call: fa.parallel(x = fss, fm = "wls", fa = "fa", main = "", n.iter = 1,
ylabel = "", cor = "poly", plot = F)
Parallel analysis suggests that the number of factors = 9 and the number of components = NA
Eigen Values of
eigen values of factors
[1] 9.97 3.37 1.91 1.10 0.90 0.73 0.46 0.33 0.28 0.18 0.11 0.04 -0.03 -0.08 -0.11
[16] -0.13 -0.18 -0.22 -0.25 -0.28 -0.30 -0.31 -0.36 -0.38 -0.39 -0.44 -0.47 -0.51 -0.55 -0.55
[31] -0.57 -0.62 -0.63 -0.65 -0.69 -0.73
eigen values of simulated factors
[1] 0.68 0.55 0.50 0.46 0.42 0.40 0.38 0.31 0.27 0.22 0.21 0.16 0.12 0.10 0.09
[16] 0.07 0.05 0.03 -0.02 -0.03 -0.08 -0.09 -0.12 -0.14 -0.17 -0.19 -0.24 -0.25 -0.29 -0.30
[31] -0.34 -0.35 -0.40 -0.42 -0.44 -0.48
eigen values of components
[1] 10.63 4.19 2.70 1.88 1.61 1.45 1.14 1.02 0.93 0.87 0.84 0.78 0.66 0.62 0.59
[16] 0.55 0.50 0.48 0.44 0.41 0.39 0.38 0.33 0.32 0.29 0.28 0.24 0.23 0.21 0.19
[31] 0.18 0.16 0.15 0.13 0.11 0.09
eigen values of simulated components
[1] NA

Running EFA with 9 factors
efa_mod <- fa(fss, nfactors = 9, cor = 'poly', fm = 'wls')
print(loadings(fa.sort(efa_mod)), cutoff = 0.3)
Loadings:
WLS2 WLS9 WLS8 WLS4 WLS5 WLS7 WLS6 WLS3 WLS1
Q22 0.869
Q13 0.725
Q12 0.703
Q3 0.599
Q21 0.592
Q6 0.464
Q1 0.332 0.328
Q23 0.875
Q32 0.714
Q5 0.598
Q33 0.424
Q24 0.400 0.386
Q4 0.350
Q10 0.644
Q30 0.636
Q36 0.631
Q31 0.322 0.332
Q28 0.708
Q18 0.691
Q8 0.688
Q34 0.663 0.463
Q16 0.892
Q7 0.504
Q25 0.480 0.333
Q17 0.839
Q26 0.447
Q27 0.362
Q20 0.329 0.682
Q29 0.671 0.464
Q2 0.597
Q11 0.344 0.451
Q9 0.713
Q19 0.696
Q35 0.620
Q14 0.506
Q15 0.435
WLS2 WLS9 WLS8 WLS4 WLS5 WLS7 WLS6 WLS3 WLS1
SS loadings 3.382 2.447 2.080 2.105 1.758 1.608 1.744 1.879 1.198
Proportion Var 0.094 0.068 0.058 0.058 0.049 0.045 0.048 0.052 0.033
Cumulative Var 0.094 0.162 0.220 0.278 0.327 0.372 0.420 0.472 0.506
Construct
validity of the long version of the FSS-BR
We decided to use the mean and variance-adjusted weighted least
squares (WLSMV) estimator. WLSMV adequately performs on non-normal
variables, and WLSMV is a robust estimator developed to model
categorical or ordered data (5-likert scale).
- Brown, T. (2006). Confirmatory factor analysis for applied research.
New York: Guildford.
- Proitsi, P., et al. (2009). A multiple indicators multiple causes
(MIMIC) model of behavioural and psychological symptoms in dementia
(BPSD). Neurobiology Aging. doi:10.1016/j.neurobiolaging.2009.03.005
Structure validity
library(lavaan)
library(semTools)
mdl4multi <- '
CSB =~ Q1 + Q10 + Q19 + Q28
MAA =~ Q2 + Q11 + Q20 + Q29
CG =~ Q3 + Q12 + Q21 + Q30
UF =~ Q4 + Q13 + Q22 + Q31
CTH =~ Q5 + Q14 + Q23 + Q32
SC =~ Q6 + Q15 + Q24 + Q33
LSC =~ Q7 + Q16 + Q25 + Q34
TT =~ Q8 + Q17 + Q26 + Q35
AE =~ Q9 + Q18 + Q27 + Q36
CSB ~~ MAA
CSB ~~ CG
CSB ~~ UF
CSB ~~ CTH
CSB ~~ SC
CSB ~~ LSC
CSB ~~ TT
CSB ~~ AE
MAA ~~ CG
MAA ~~ UF
MAA ~~ CTH
MAA ~~ SC
MAA ~~ LSC
MAA ~~ TT
MAA ~~ AE
CG ~~ UF
CG ~~ CTH
CG ~~ SC
CG ~~ LSC
CG ~~ TT
CG ~~ AE
UF ~~ CTH
UF ~~ SC
UF ~~ LSC
UF ~~ TT
UF ~~ AE
CTH ~~ SC
CTH ~~ LSC
CTH ~~ TT
CTH ~~ AE
SC ~~ LSC
SC ~~ TT
SC ~~ AE
LSC ~~ TT
LSC ~~ AE
TT ~~ AE
'
fitMeasures(cfa(mdl4multi, data=fss), fit.measures = "all")
Warning in lav_object_post_check(object): lavaan WARNING: covariance matrix of latent variables
is not positive definite;
use lavInspect(fit, "cov.lv") to investigate.
npar fmin chisq df
108.000 3.795 3005.767 558.000
pvalue baseline.chisq baseline.df baseline.pvalue
0.000 7041.108 630.000 0.000
cfi tli nnfi rfi
0.618 0.569 0.569 0.518
nfi pnfi ifi rni
0.573 0.508 0.622 0.618
logl unrestricted.logl aic bic
-18642.612 -17139.728 37501.223 37931.216
ntotal bic2 rmsea rmsea.ci.lower
396.000 37588.530 0.105 0.102
rmsea.ci.upper rmsea.pvalue rmr rmr_nomean
0.109 0.000 0.127 0.127
srmr srmr_bentler srmr_bentler_nomean crmr
0.117 0.117 0.117 0.121
crmr_nomean srmr_mplus srmr_mplus_nomean cn_05
0.121 0.117 0.117 81.901
cn_01 gfi agfi pgfi
85.139 0.648 0.580 0.543
mfi ecvi
0.045 8.136
fit4multi <- cfa(mdl4multi, data=fss, estimator="WLSMV", std.lv=T)
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: covariance matrix of latent variables
is not positive definite;
use lavInspect(fit, "cov.lv") to investigate.
standardizedsolution(fit4multi)
lhs op rhs est.std se z pvalue ci.lower ci.upper
1 CSB =~ Q1 0.518 0.047 11.073 0.000 0.426 0.610
2 CSB =~ Q10 0.640 0.042 15.399 0.000 0.558 0.721
3 CSB =~ Q19 0.469 0.045 10.501 0.000 0.381 0.556
4 CSB =~ Q28 0.466 0.046 10.129 0.000 0.376 0.556
5 MAA =~ Q2 0.696 0.042 16.450 0.000 0.613 0.779
6 MAA =~ Q11 0.793 0.048 16.607 0.000 0.699 0.886
7 MAA =~ Q20 0.633 0.048 13.205 0.000 0.539 0.727
8 MAA =~ Q29 0.346 0.067 5.167 0.000 0.214 0.477
9 CG =~ Q3 0.458 0.050 9.090 0.000 0.359 0.556
10 CG =~ Q12 0.229 0.058 3.917 0.000 0.114 0.344
11 CG =~ Q21 0.599 0.042 14.148 0.000 0.516 0.682
12 CG =~ Q30 0.667 0.048 14.005 0.000 0.573 0.760
13 UF =~ Q4 0.820 0.042 19.492 0.000 0.738 0.903
14 UF =~ Q13 0.415 0.056 7.443 0.000 0.305 0.524
15 UF =~ Q22 0.460 0.054 8.480 0.000 0.354 0.566
16 UF =~ Q31 0.654 0.046 14.323 0.000 0.564 0.743
17 CTH =~ Q5 0.615 0.042 14.766 0.000 0.534 0.697
18 CTH =~ Q14 0.541 0.044 12.430 0.000 0.456 0.626
19 CTH =~ Q23 0.671 0.036 18.626 0.000 0.601 0.742
20 CTH =~ Q32 0.642 0.041 15.823 0.000 0.563 0.722
21 SC =~ Q6 0.220 0.055 4.023 0.000 0.113 0.327
22 SC =~ Q15 0.665 0.037 18.192 0.000 0.594 0.737
23 SC =~ Q24 0.760 0.032 23.853 0.000 0.698 0.823
24 SC =~ Q33 0.676 0.034 19.788 0.000 0.609 0.743
25 LSC =~ Q7 0.789 0.044 17.808 0.000 0.702 0.876
26 LSC =~ Q16 0.694 0.046 15.046 0.000 0.604 0.785
27 LSC =~ Q25 0.716 0.041 17.513 0.000 0.636 0.797
28 LSC =~ Q34 0.542 0.051 10.736 0.000 0.443 0.642
29 TT =~ Q8 0.384 0.057 6.695 0.000 0.272 0.497
30 TT =~ Q17 0.705 0.046 15.359 0.000 0.615 0.795
31 TT =~ Q26 0.767 0.049 15.648 0.000 0.671 0.864
32 TT =~ Q35 0.434 0.057 7.664 0.000 0.323 0.545
33 AE =~ Q9 0.391 0.056 6.981 0.000 0.281 0.501
34 AE =~ Q18 0.442 0.054 8.219 0.000 0.337 0.547
35 AE =~ Q27 0.813 0.032 25.073 0.000 0.749 0.876
36 AE =~ Q36 0.668 0.040 16.710 0.000 0.590 0.746
37 CSB ~~ MAA 0.513 0.084 6.085 0.000 0.348 0.678
38 CSB ~~ CG 0.898 0.063 14.169 0.000 0.774 1.023
39 CSB ~~ UF 0.672 0.066 10.201 0.000 0.543 0.801
40 CSB ~~ CTH 0.725 0.068 10.721 0.000 0.593 0.858
41 CSB ~~ SC 0.797 0.057 14.087 0.000 0.686 0.908
42 CSB ~~ LSC 0.608 0.071 8.596 0.000 0.469 0.746
43 CSB ~~ TT 0.617 0.072 8.569 0.000 0.476 0.758
44 CSB ~~ AE 0.890 0.061 14.594 0.000 0.770 1.009
45 MAA ~~ CG 0.470 0.084 5.600 0.000 0.306 0.635
46 MAA ~~ UF 0.251 0.077 3.251 0.001 0.100 0.403
47 MAA ~~ CTH 0.561 0.071 7.891 0.000 0.422 0.700
48 MAA ~~ SC 0.430 0.076 5.655 0.000 0.281 0.579
49 MAA ~~ LSC 0.418 0.068 6.191 0.000 0.286 0.551
50 MAA ~~ TT 0.654 0.058 11.241 0.000 0.540 0.767
51 MAA ~~ AE 0.647 0.064 10.159 0.000 0.522 0.771
52 CG ~~ UF 0.937 0.050 18.811 0.000 0.839 1.034
53 CG ~~ CTH 0.708 0.077 9.200 0.000 0.557 0.858
54 CG ~~ SC 0.946 0.051 18.501 0.000 0.846 1.046
55 CG ~~ LSC 0.576 0.077 7.506 0.000 0.426 0.727
56 CG ~~ TT 0.469 0.093 5.037 0.000 0.286 0.651
57 CG ~~ AE 0.593 0.070 8.501 0.000 0.456 0.729
58 UF ~~ CTH 0.579 0.075 7.723 0.000 0.432 0.726
59 UF ~~ SC 0.834 0.044 19.078 0.000 0.748 0.919
60 UF ~~ LSC 0.452 0.073 6.227 0.000 0.310 0.594
61 UF ~~ TT 0.232 0.080 2.887 0.004 0.075 0.389
62 UF ~~ AE 0.383 0.076 5.027 0.000 0.233 0.532
63 CTH ~~ SC 0.936 0.048 19.495 0.000 0.842 1.030
64 CTH ~~ LSC 0.677 0.061 11.092 0.000 0.557 0.797
65 CTH ~~ TT 0.646 0.069 9.348 0.000 0.510 0.781
66 CTH ~~ AE 0.668 0.063 10.681 0.000 0.546 0.791
67 SC ~~ LSC 0.578 0.064 9.003 0.000 0.453 0.704
68 SC ~~ TT 0.516 0.077 6.664 0.000 0.364 0.667
69 SC ~~ AE 0.591 0.059 10.006 0.000 0.475 0.707
70 LSC ~~ TT 0.459 0.077 5.934 0.000 0.307 0.611
71 LSC ~~ AE 0.541 0.068 7.960 0.000 0.408 0.674
72 TT ~~ AE 0.860 0.052 16.635 0.000 0.759 0.961
73 Q1 ~~ Q1 0.732 0.048 15.091 0.000 0.637 0.827
74 Q10 ~~ Q10 0.590 0.053 11.102 0.000 0.486 0.695
75 Q19 ~~ Q19 0.780 0.042 18.640 0.000 0.698 0.862
76 Q28 ~~ Q28 0.783 0.043 18.296 0.000 0.699 0.867
77 Q2 ~~ Q2 0.515 0.059 8.741 0.000 0.400 0.631
78 Q11 ~~ Q11 0.372 0.076 4.911 0.000 0.223 0.520
79 Q20 ~~ Q20 0.600 0.061 9.883 0.000 0.481 0.718
80 Q29 ~~ Q29 0.881 0.046 19.051 0.000 0.790 0.971
81 Q3 ~~ Q3 0.790 0.046 17.143 0.000 0.700 0.881
82 Q12 ~~ Q12 0.948 0.027 35.382 0.000 0.895 1.000
83 Q21 ~~ Q21 0.641 0.051 12.631 0.000 0.542 0.740
84 Q30 ~~ Q30 0.555 0.063 8.746 0.000 0.431 0.680
85 Q4 ~~ Q4 0.327 0.069 4.736 0.000 0.192 0.462
86 Q13 ~~ Q13 0.828 0.046 17.921 0.000 0.737 0.919
87 Q22 ~~ Q22 0.788 0.050 15.794 0.000 0.691 0.886
88 Q31 ~~ Q31 0.573 0.060 9.595 0.000 0.456 0.690
89 Q5 ~~ Q5 0.621 0.051 12.119 0.000 0.521 0.722
90 Q14 ~~ Q14 0.707 0.047 15.015 0.000 0.615 0.800
91 Q23 ~~ Q23 0.549 0.048 11.343 0.000 0.454 0.644
92 Q32 ~~ Q32 0.588 0.052 11.269 0.000 0.485 0.690
93 Q6 ~~ Q6 0.952 0.024 39.567 0.000 0.904 0.999
94 Q15 ~~ Q15 0.557 0.049 11.448 0.000 0.462 0.653
95 Q24 ~~ Q24 0.422 0.048 8.712 0.000 0.327 0.517
96 Q33 ~~ Q33 0.543 0.046 11.756 0.000 0.452 0.634
97 Q7 ~~ Q7 0.377 0.070 5.393 0.000 0.240 0.514
98 Q16 ~~ Q16 0.518 0.064 8.083 0.000 0.392 0.644
99 Q25 ~~ Q25 0.487 0.059 8.306 0.000 0.372 0.602
100 Q34 ~~ Q34 0.706 0.055 12.874 0.000 0.598 0.813
101 Q8 ~~ Q8 0.852 0.044 19.332 0.000 0.766 0.939
102 Q17 ~~ Q17 0.503 0.065 7.780 0.000 0.376 0.630
103 Q26 ~~ Q26 0.411 0.075 5.459 0.000 0.263 0.559
104 Q35 ~~ Q35 0.812 0.049 16.518 0.000 0.715 0.908
105 Q9 ~~ Q9 0.847 0.044 19.330 0.000 0.761 0.933
106 Q18 ~~ Q18 0.805 0.048 16.931 0.000 0.712 0.898
107 Q27 ~~ Q27 0.339 0.053 6.435 0.000 0.236 0.442
108 Q36 ~~ Q36 0.554 0.053 10.376 0.000 0.449 0.659
109 CSB ~~ CSB 1.000 0.000 NA NA 1.000 1.000
110 MAA ~~ MAA 1.000 0.000 NA NA 1.000 1.000
111 CG ~~ CG 1.000 0.000 NA NA 1.000 1.000
[ reached 'max' / getOption("max.print") -- omitted 6 rows ]
fitMeasures(fit4multi, fit.measures = "all")
npar fmin chisq
108.000 2.992 2369.737
df pvalue chisq.scaled
558.000 0.000 2101.827
df.scaled pvalue.scaled chisq.scaling.factor
558.000 0.000 1.339
baseline.chisq baseline.df baseline.pvalue
14681.305 630.000 0.000
baseline.chisq.scaled baseline.df.scaled baseline.pvalue.scaled
3951.121 630.000 0.000
baseline.chisq.scaling.factor cfi tli
4.231 0.871 0.854
nnfi rfi nfi
0.854 0.818 0.839
pnfi ifi rni
0.743 0.872 0.871
cfi.scaled tli.scaled cfi.robust
0.535 0.475 NA
tli.robust nnfi.scaled nnfi.robust
NA 0.475 NA
rfi.scaled nfi.scaled ifi.scaled
0.399 0.468 0.545
rni.scaled rni.robust rmsea
0.535 NA 0.091
rmsea.ci.lower rmsea.ci.upper rmsea.pvalue
0.087 0.094 0.000
rmsea.scaled rmsea.ci.lower.scaled rmsea.ci.upper.scaled
0.084 0.080 0.088
rmsea.pvalue.scaled rmsea.robust rmsea.ci.lower.robust
0.000 NA NA
rmsea.ci.upper.robust rmsea.pvalue.robust rmr
NA NA 0.116
rmr_nomean srmr srmr_bentler
0.116 0.102 0.102
srmr_bentler_nomean crmr crmr_nomean
0.102 0.105 0.105
srmr_mplus srmr_mplus_nomean cn_05
0.102 0.102 103.355
cn_01 gfi agfi
107.452 0.904 0.886
pgfi mfi ecvi
0.758 0.101 6.546
moreFitIndices(fit4multi, fit.measures = "all")
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
gammaHat adjGammaHat baseline.rmsea gammaHat.scaled
0.7973389 0.7581141 0.2376236 0.8219721
adjGammaHat.scaled baseline.rmsea.scaled
0.7875151 0.1155243
library(semPlot)
semPlot::semPaths(
fit4multi, "std", curvePivot = T, layout = "circle", rotation = 3,
fade = T, intercepts = T, residuals = T, sizeLat = 4, sizeLat2 = 3, sizeMan = 4,
esize = 1.5, asize = 1.5, edge.label.position = 0.55, levels = c(9.75,10,10,10))

Internal consistency
library(semTools)
(df <- semTools::reliability(fit4multi))
CSB MAA CG UF CTH SC LSC TT AE
alpha 0.5936267 0.7230577 0.6044585 0.7120178 0.6978117 0.6141302 0.7771464 0.6588516 0.6692618
omega 0.5960418 0.7172051 0.5561393 0.6728345 0.7088657 0.6355154 0.7730813 0.6551928 0.6705276
omega2 0.5960418 0.7172051 0.5561393 0.6728345 0.7088657 0.6355154 0.7730813 0.6551928 0.6705276
omega3 0.5943786 0.6920160 0.5089525 0.6224982 0.7206865 0.6380916 0.7654152 0.6396234 0.6558981
avevar 0.2738922 0.4038477 0.2569347 0.3504330 0.3790097 0.3215411 0.4614085 0.3345737 0.3529141
knitr::kable(df, digits = 3)
| alpha |
0.594 |
0.723 |
0.604 |
0.712 |
0.698 |
0.614 |
0.777 |
0.659 |
0.669 |
| omega |
0.596 |
0.717 |
0.556 |
0.673 |
0.709 |
0.636 |
0.773 |
0.655 |
0.671 |
| omega2 |
0.596 |
0.717 |
0.556 |
0.673 |
0.709 |
0.636 |
0.773 |
0.655 |
0.671 |
| omega3 |
0.594 |
0.692 |
0.509 |
0.622 |
0.721 |
0.638 |
0.765 |
0.640 |
0.656 |
| avevar |
0.274 |
0.404 |
0.257 |
0.350 |
0.379 |
0.322 |
0.461 |
0.335 |
0.353 |
Convergent
validity and discriminant validity
(df <- convergentDiscriminantValidity(fit4multi, mdl4multi, fss))
CR AVE VIF VIF.i CSB MAA CG UF CTH
CSB 0.6027552 0.2738922 2.110524 1.350265 0.5233471 0.5473725 0.8529059 0.6823664 0.7269748
MAA 0.7200508 0.4038477 1.415515 1.697888 0.5128799 0.6354901 0.4975342 0.3265656 0.5696953
CG 0.5651241 0.2569347 2.244220 1.449625 0.8983002 0.4703605 0.5068872 1.0150820 0.6763847
UF 0.6867922 0.3504330 2.056871 1.792668 0.6721956 0.2513787 0.9366236 0.5919738 0.5541886
CTH 0.7122114 0.3790097 2.100689 1.784923 0.7253034 0.5610349 0.7075834 0.5787399 0.6156376
SC 0.6853803 0.3215411 2.506635 1.619964 0.7967762 0.4301534 0.9459630 0.8335442 0.9357756
LSC 0.7827150 0.4614085 1.489139 1.673296 0.6078765 0.4181676 0.5762290 0.4518117 0.6770441
TT 0.6704641 0.3345737 1.763343 1.495731 0.6168442 0.6535276 0.4688284 0.2320013 0.6457750
AE 0.6778046 0.3529141 2.141595 1.589625 0.8898975 0.6465270 0.5928125 0.3826463 0.6684667
SC LSC TT AE
CSB 0.8414861 0.6297587 0.6607577 0.9595111
MAA 0.4686285 0.4113716 0.6741444 0.6174888
CG 1.0010753 0.5216722 0.4383197 0.5936177
UF 0.8865678 0.4160803 0.2566063 0.4406559
CTH 0.9823847 0.6880799 0.6205455 0.6408338
SC 0.5670460 0.5810143 0.5335089 0.6588856
LSC 0.5784911 0.6792706 0.4591919 0.5423177
TT 0.5157380 0.4589601 0.5784235 0.8980058
AE 0.5909376 0.5407415 0.8598428 0.5940657
knitr::kable(df, digits = 3)
| CSB |
0.603 |
0.274 |
2.111 |
1.350 |
0.523 |
0.547 |
0.853 |
0.682 |
0.727 |
0.841 |
0.630 |
0.661 |
0.960 |
| MAA |
0.720 |
0.404 |
1.416 |
1.698 |
0.513 |
0.635 |
0.498 |
0.327 |
0.570 |
0.469 |
0.411 |
0.674 |
0.617 |
| CG |
0.565 |
0.257 |
2.244 |
1.450 |
0.898 |
0.470 |
0.507 |
1.015 |
0.676 |
1.001 |
0.522 |
0.438 |
0.594 |
| UF |
0.687 |
0.350 |
2.057 |
1.793 |
0.672 |
0.251 |
0.937 |
0.592 |
0.554 |
0.887 |
0.416 |
0.257 |
0.441 |
| CTH |
0.712 |
0.379 |
2.101 |
1.785 |
0.725 |
0.561 |
0.708 |
0.579 |
0.616 |
0.982 |
0.688 |
0.621 |
0.641 |
| SC |
0.685 |
0.322 |
2.507 |
1.620 |
0.797 |
0.430 |
0.946 |
0.834 |
0.936 |
0.567 |
0.581 |
0.534 |
0.659 |
| LSC |
0.783 |
0.461 |
1.489 |
1.673 |
0.608 |
0.418 |
0.576 |
0.452 |
0.677 |
0.578 |
0.679 |
0.459 |
0.542 |
| TT |
0.670 |
0.335 |
1.763 |
1.496 |
0.617 |
0.654 |
0.469 |
0.232 |
0.646 |
0.516 |
0.459 |
0.578 |
0.898 |
| AE |
0.678 |
0.353 |
2.142 |
1.590 |
0.890 |
0.647 |
0.593 |
0.383 |
0.668 |
0.591 |
0.541 |
0.860 |
0.594 |
Second order model
(36 itens and 9 factors)
Structure validity
library(lavaan)
mdl4second <- '
CSB =~ Q1 + Q10 + Q19 + Q28
MAA =~ Q2 + Q11 + Q20 + Q29
CG =~ Q3 + Q12 + Q21 + Q30
UF =~ Q4 + Q13 + Q22 + Q31
CTH =~ Q5 + Q14 + Q23 + Q32
SC =~ Q6 + Q15 + Q24 + Q33
LSC =~ Q7 + Q16 + Q25 + Q34
TT =~ Q8 + Q17 + Q26 + Q35
AE =~ Q9 + Q18 + Q27 + Q36
FSS =~ CSB + MAA + CG + UF + CTH + SC + LSC + TT + AE
CSB ~~ 0*MAA
CSB ~~ 0*CG
CSB ~~ 0*UF
CSB ~~ 0*CTH
CSB ~~ 0*SC
CSB ~~ 0*LSC
CSB ~~ 0*TT
CSB ~~ 0*AE
MAA ~~ 0*CG
MAA ~~ 0*UF
MAA ~~ 0*CTH
MAA ~~ 0*SC
MAA ~~ 0*LSC
MAA ~~ 0*TT
MAA ~~ 0*AE
CG ~~ 0*UF
CG ~~ 0*CTH
CG ~~ 0*SC
CG ~~ 0*LSC
CG ~~ 0*TT
CG ~~ 0*AE
UF ~~ 0*CTH
UF ~~ 0*SC
UF ~~ 0*LSC
UF ~~ 0*TT
UF ~~ 0*AE
CTH ~~ 0*SC
CTH ~~ 0*LSC
CTH ~~ 0*TT
CTH ~~ 0*AE
SC ~~ 0*LSC
SC ~~ 0*TT
SC ~~ 0*AE
LSC ~~ 0*TT
LSC ~~ 0*AE
TT ~~ 0*AE
'
fitMeasures(cfa(mdl4second, data=fss), fit.measures = "all")
npar fmin chisq df
81.000 4.231 3351.224 585.000
pvalue baseline.chisq baseline.df baseline.pvalue
0.000 7041.108 630.000 0.000
cfi tli nnfi rfi
0.569 0.535 0.535 0.487
nfi pnfi ifi rni
0.524 0.487 0.572 0.569
logl unrestricted.logl aic bic
-18815.340 -17139.728 37792.679 38115.174
ntotal bic2 rmsea rmsea.ci.lower
396.000 37858.160 0.109 0.106
rmsea.ci.upper rmsea.pvalue rmr rmr_nomean
0.113 0.000 0.129 0.129
srmr srmr_bentler srmr_bentler_nomean crmr
0.115 0.115 0.115 0.118
crmr_nomean srmr_mplus srmr_mplus_nomean cn_05
0.118 0.115 0.115 76.907
cn_01 gfi agfi pgfi
79.876 0.600 0.544 0.527
mfi ecvi
0.030 8.872
fit4second <-cfa(mdl4second, data=fss, estimator="WLSMV", std.lv=T)
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
standardizedSolution(fit4second)
lhs op rhs est.std se z pvalue ci.lower ci.upper
1 CSB =~ Q1 0.523 0.047 11.183 0.000 0.431 0.615
2 CSB =~ Q10 0.645 0.042 15.304 0.000 0.563 0.728
3 CSB =~ Q19 0.458 0.046 10.072 0.000 0.369 0.548
4 CSB =~ Q28 0.465 0.047 9.962 0.000 0.373 0.556
5 MAA =~ Q2 0.697 0.044 15.665 0.000 0.609 0.784
6 MAA =~ Q11 0.801 0.050 15.939 0.000 0.702 0.899
7 MAA =~ Q20 0.633 0.051 12.530 0.000 0.534 0.732
8 MAA =~ Q29 0.323 0.069 4.718 0.000 0.189 0.458
9 CG =~ Q3 0.433 0.052 8.253 0.000 0.330 0.536
10 CG =~ Q12 0.182 0.062 2.941 0.003 0.061 0.303
11 CG =~ Q21 0.584 0.045 13.079 0.000 0.497 0.672
12 CG =~ Q30 0.700 0.050 14.140 0.000 0.603 0.797
13 UF =~ Q4 0.847 0.047 17.983 0.000 0.755 0.939
14 UF =~ Q13 0.371 0.062 6.025 0.000 0.250 0.492
15 UF =~ Q22 0.415 0.060 6.938 0.000 0.298 0.532
16 UF =~ Q31 0.667 0.049 13.495 0.000 0.570 0.764
17 CTH =~ Q5 0.614 0.042 14.625 0.000 0.532 0.697
18 CTH =~ Q14 0.539 0.044 12.319 0.000 0.453 0.625
19 CTH =~ Q23 0.674 0.036 18.601 0.000 0.603 0.745
20 CTH =~ Q32 0.644 0.041 15.832 0.000 0.564 0.724
21 SC =~ Q6 0.193 0.057 3.376 0.001 0.081 0.305
22 SC =~ Q15 0.661 0.037 17.661 0.000 0.588 0.735
23 SC =~ Q24 0.775 0.033 23.674 0.000 0.711 0.839
24 SC =~ Q33 0.680 0.035 19.603 0.000 0.612 0.748
25 LSC =~ Q7 0.787 0.044 17.764 0.000 0.701 0.874
26 LSC =~ Q16 0.695 0.046 15.032 0.000 0.604 0.785
27 LSC =~ Q25 0.719 0.041 17.532 0.000 0.639 0.799
28 LSC =~ Q34 0.541 0.051 10.674 0.000 0.442 0.640
29 TT =~ Q8 0.379 0.060 6.284 0.000 0.261 0.497
30 TT =~ Q17 0.713 0.048 14.775 0.000 0.619 0.808
31 TT =~ Q26 0.782 0.053 14.826 0.000 0.678 0.885
32 TT =~ Q35 0.407 0.059 6.846 0.000 0.290 0.523
33 AE =~ Q9 0.384 0.059 6.551 0.000 0.269 0.498
34 AE =~ Q18 0.439 0.055 7.920 0.000 0.331 0.548
35 AE =~ Q27 0.830 0.035 23.756 0.000 0.761 0.898
36 AE =~ Q36 0.659 0.042 15.832 0.000 0.578 0.741
37 FSS =~ CSB 0.917 0.038 24.293 0.000 0.843 0.991
38 FSS =~ MAA 0.615 0.061 10.063 0.000 0.495 0.734
39 FSS =~ CG 0.901 0.045 19.950 0.000 0.812 0.989
40 FSS =~ UF 0.674 0.049 13.773 0.000 0.578 0.770
41 FSS =~ CTH 0.900 0.040 22.596 0.000 0.822 0.978
42 FSS =~ SC 0.901 0.028 32.413 0.000 0.847 0.956
43 FSS =~ LSC 0.674 0.048 14.116 0.000 0.580 0.768
44 FSS =~ TT 0.701 0.060 11.740 0.000 0.584 0.818
45 FSS =~ AE 0.811 0.038 21.611 0.000 0.737 0.884
46 CSB ~~ MAA 0.000 0.000 NA NA 0.000 0.000
47 CSB ~~ CG 0.000 0.000 NA NA 0.000 0.000
48 CSB ~~ UF 0.000 0.000 NA NA 0.000 0.000
49 CSB ~~ CTH 0.000 0.000 NA NA 0.000 0.000
50 CSB ~~ SC 0.000 0.000 NA NA 0.000 0.000
51 CSB ~~ LSC 0.000 0.000 NA NA 0.000 0.000
52 CSB ~~ TT 0.000 0.000 NA NA 0.000 0.000
53 CSB ~~ AE 0.000 0.000 NA NA 0.000 0.000
54 MAA ~~ CG 0.000 0.000 NA NA 0.000 0.000
55 MAA ~~ UF 0.000 0.000 NA NA 0.000 0.000
56 MAA ~~ CTH 0.000 0.000 NA NA 0.000 0.000
57 MAA ~~ SC 0.000 0.000 NA NA 0.000 0.000
58 MAA ~~ LSC 0.000 0.000 NA NA 0.000 0.000
59 MAA ~~ TT 0.000 0.000 NA NA 0.000 0.000
60 MAA ~~ AE 0.000 0.000 NA NA 0.000 0.000
61 CG ~~ UF 0.000 0.000 NA NA 0.000 0.000
62 CG ~~ CTH 0.000 0.000 NA NA 0.000 0.000
63 CG ~~ SC 0.000 0.000 NA NA 0.000 0.000
64 CG ~~ LSC 0.000 0.000 NA NA 0.000 0.000
65 CG ~~ TT 0.000 0.000 NA NA 0.000 0.000
66 CG ~~ AE 0.000 0.000 NA NA 0.000 0.000
67 UF ~~ CTH 0.000 0.000 NA NA 0.000 0.000
68 UF ~~ SC 0.000 0.000 NA NA 0.000 0.000
69 UF ~~ LSC 0.000 0.000 NA NA 0.000 0.000
70 UF ~~ TT 0.000 0.000 NA NA 0.000 0.000
71 UF ~~ AE 0.000 0.000 NA NA 0.000 0.000
72 CTH ~~ SC 0.000 0.000 NA NA 0.000 0.000
73 CTH ~~ LSC 0.000 0.000 NA NA 0.000 0.000
74 CTH ~~ TT 0.000 0.000 NA NA 0.000 0.000
75 CTH ~~ AE 0.000 0.000 NA NA 0.000 0.000
76 SC ~~ LSC 0.000 0.000 NA NA 0.000 0.000
77 SC ~~ TT 0.000 0.000 NA NA 0.000 0.000
78 SC ~~ AE 0.000 0.000 NA NA 0.000 0.000
79 LSC ~~ TT 0.000 0.000 NA NA 0.000 0.000
80 LSC ~~ AE 0.000 0.000 NA NA 0.000 0.000
81 TT ~~ AE 0.000 0.000 NA NA 0.000 0.000
82 Q1 ~~ Q1 0.726 0.049 14.849 0.000 0.631 0.822
83 Q10 ~~ Q10 0.584 0.054 10.726 0.000 0.477 0.690
84 Q19 ~~ Q19 0.790 0.042 18.921 0.000 0.708 0.872
85 Q28 ~~ Q28 0.784 0.043 18.079 0.000 0.699 0.869
86 Q2 ~~ Q2 0.515 0.062 8.306 0.000 0.393 0.636
87 Q11 ~~ Q11 0.359 0.080 4.454 0.000 0.201 0.516
88 Q20 ~~ Q20 0.599 0.064 9.369 0.000 0.474 0.725
89 Q29 ~~ Q29 0.896 0.044 20.217 0.000 0.809 0.982
90 Q3 ~~ Q3 0.813 0.045 17.896 0.000 0.724 0.902
91 Q12 ~~ Q12 0.967 0.022 43.152 0.000 0.923 1.011
92 Q21 ~~ Q21 0.659 0.052 12.619 0.000 0.556 0.761
93 Q30 ~~ Q30 0.510 0.069 7.349 0.000 0.374 0.646
94 Q4 ~~ Q4 0.283 0.080 3.540 0.000 0.126 0.439
95 Q13 ~~ Q13 0.862 0.046 18.880 0.000 0.773 0.952
96 Q22 ~~ Q22 0.828 0.050 16.662 0.000 0.730 0.925
97 Q31 ~~ Q31 0.555 0.066 8.403 0.000 0.425 0.684
98 Q5 ~~ Q5 0.623 0.052 12.058 0.000 0.521 0.724
99 Q14 ~~ Q14 0.709 0.047 15.043 0.000 0.617 0.802
100 Q23 ~~ Q23 0.546 0.049 11.185 0.000 0.450 0.642
101 Q32 ~~ Q32 0.585 0.052 11.167 0.000 0.482 0.688
102 Q6 ~~ Q6 0.963 0.022 43.791 0.000 0.920 1.006
103 Q15 ~~ Q15 0.562 0.050 11.353 0.000 0.465 0.660
104 Q24 ~~ Q24 0.400 0.051 7.888 0.000 0.301 0.499
105 Q33 ~~ Q33 0.538 0.047 11.395 0.000 0.445 0.630
106 Q7 ~~ Q7 0.380 0.070 5.440 0.000 0.243 0.517
107 Q16 ~~ Q16 0.517 0.064 8.057 0.000 0.392 0.643
108 Q25 ~~ Q25 0.483 0.059 8.192 0.000 0.368 0.599
109 Q34 ~~ Q34 0.708 0.055 12.910 0.000 0.600 0.815
110 Q8 ~~ Q8 0.856 0.046 18.737 0.000 0.767 0.946
111 Q17 ~~ Q17 0.491 0.069 7.137 0.000 0.356 0.626
[ reached 'max' / getOption("max.print") -- omitted 16 rows ]
fitMeasures(fit4second, fit.measures = "all")
npar fmin chisq
81.000 3.499 2771.034
df pvalue chisq.scaled
585.000 0.000 2149.296
df.scaled pvalue.scaled chisq.scaling.factor
585.000 0.000 1.551
baseline.chisq baseline.df baseline.pvalue
14681.305 630.000 0.000
baseline.chisq.scaled baseline.df.scaled baseline.pvalue.scaled
3951.121 630.000 0.000
baseline.chisq.scaling.factor cfi tli
4.231 0.844 0.832
nnfi rfi nfi
0.832 0.797 0.811
pnfi ifi rni
0.753 0.845 0.844
cfi.scaled tli.scaled cfi.robust
0.529 0.493 NA
tli.robust nnfi.scaled nnfi.robust
NA 0.493 NA
rfi.scaled nfi.scaled ifi.scaled
0.414 0.456 0.535
rni.scaled rni.robust rmsea
0.529 NA 0.097
rmsea.ci.lower rmsea.ci.upper rmsea.pvalue
0.094 0.101 0.000
rmsea.scaled rmsea.ci.lower.scaled rmsea.ci.upper.scaled
0.082 0.079 0.086
rmsea.pvalue.scaled rmsea.robust rmsea.ci.lower.robust
0.000 NA NA
rmsea.ci.upper.robust rmsea.pvalue.robust rmr
NA NA 0.125
rmr_nomean srmr srmr_bentler
0.125 0.111 0.111
srmr_bentler_nomean crmr crmr_nomean
0.111 0.114 0.114
srmr_mplus srmr_mplus_nomean cn_05
0.111 0.111 92.568
cn_01 gfi agfi
96.150 0.888 0.873
pgfi mfi ecvi
0.780 0.063 7.425
moreFitIndices(fit4second, fit.measures = "all")
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
gammaHat adjGammaHat baseline.rmsea gammaHat.scaled
0.7652967 0.7327993 0.2376236 0.8200365
adjGammaHat.scaled baseline.rmsea.scaled
0.7951185 0.1155243
library(semPlot)
semPlot::semPaths(
fit4second, "std", curvePivot = T, layout = "tree", rotation = 1,
fade = T, intercepts = T, residuals = T, esize = 1.5, asize = 1.5,
sizeLat = 4, sizeMan = 2, sizeMan2 = 4, sizeInt = 6, sizeInt2 = 12)

Internal consistency
library(semTools)
semTools::reliabilityL2(fit4second, "FSS")
omegaL1 omegaL2 partialOmegaL1
0.8576015 0.9528720 0.9161821
(df <- semTools::reliability(fit4second, return.total = T))
CSB MAA CG UF CTH SC LSC TT AE
alpha 0.5936267 0.7230577 0.6044585 0.7120178 0.6978117 0.6141302 0.7771464 0.6588516 0.6692618
omega 0.5954992 0.7146745 0.5397522 0.6598326 0.7091786 0.6311211 0.7729580 0.6528319 0.6703087
omega2 0.5954992 0.7146745 0.5397522 0.6598326 0.7091786 0.6311211 0.7729580 0.6528319 0.6703087
omega3 0.5931738 0.6841776 0.4792408 0.5930998 0.7212836 0.6259358 0.7651055 0.6326085 0.6541159
avevar 0.2737284 0.4032213 0.2524549 0.3438343 0.3794386 0.3217542 0.4612470 0.3349686 0.3540319
total
alpha 0.9064489
omega 0.9215414
omega2 0.9215414
omega3 0.9042825
avevar 0.3515626
knitr::kable(df, digits = 3)
| alpha |
0.594 |
0.723 |
0.604 |
0.712 |
0.698 |
0.614 |
0.777 |
0.659 |
0.669 |
0.906 |
| omega |
0.595 |
0.715 |
0.540 |
0.660 |
0.709 |
0.631 |
0.773 |
0.653 |
0.670 |
0.922 |
| omega2 |
0.595 |
0.715 |
0.540 |
0.660 |
0.709 |
0.631 |
0.773 |
0.653 |
0.670 |
0.922 |
| omega3 |
0.593 |
0.684 |
0.479 |
0.593 |
0.721 |
0.626 |
0.765 |
0.633 |
0.654 |
0.904 |
| avevar |
0.274 |
0.403 |
0.252 |
0.344 |
0.379 |
0.322 |
0.461 |
0.335 |
0.354 |
0.352 |
Convergent
validity and discriminant validity
(df <- convergentDiscriminantValidity(fit4second, mdl4second, fss, "FSS"))
Warning in cbind(CR, AVE, VIF, VIF.i, df): number of rows of result is not a multiple of vector
length (arg 3)
CR AVE VIF VIF.i CSB MAA CG UF CTH
CSB 0.6026789 0.2737284 2.110524 1.350265 0.5231906 0.5473725 0.8529059 0.6823664 0.7269748
MAA 0.7177382 0.4032213 1.415515 1.697888 0.5636998 0.6349971 0.4975342 0.3265656 0.5696953
CG 0.5501836 0.2524549 2.244220 1.449625 0.8261945 0.5536503 0.5024489 1.0150820 0.6763847
UF 0.6767978 0.3438343 2.056871 1.792668 0.6178836 0.4140567 0.6068680 0.5863739 0.5541886
CTH 0.7125909 0.3794386 2.100689 1.784923 0.8255545 0.5532214 0.8108366 0.6063979 0.6159859
SC 0.6839725 0.3217542 2.506635 1.619964 0.8264220 0.5538027 0.8116886 0.6070351 0.8110599
LSC 0.7826656 0.4612470 1.489139 1.673296 0.6181269 0.4142198 0.6071071 0.4540353 0.6066368
TT 0.6691425 0.3349686 1.763343 1.495731 0.6428811 0.4308081 0.6314199 0.4722181 0.6309308
AE 0.6781292 0.3540319 2.141595 1.589625 0.7433918 0.4981625 0.7301387 0.5460466 0.7295731
FSS 0.9385987 0.3515626 2.110524 1.350265 0.9171647 0.6146113 0.9008136 0.6736887 0.9001158
SC LSC TT AE FSS
CSB 0.8414861 0.6297587 0.6607577 0.9595111 NA
MAA 0.4686285 0.4113716 0.6741444 0.6174888 NA
CG 1.0010753 0.5216722 0.4383197 0.5936177 NA
UF 0.8865678 0.4160803 0.2566063 0.4406559 NA
CTH 0.9823847 0.6880799 0.6205455 0.6408338 NA
SC 0.5672338 0.5810143 0.5335089 0.6588856 NA
LSC 0.6072742 0.6791517 0.4591919 0.5423177 NA
TT 0.6315938 0.4724041 0.5787647 0.8980058 NA
AE 0.7303398 0.5462617 0.5681379 0.5950058 NA
FSS 0.9010617 0.6739541 0.7009440 0.8105325 0.5929271
knitr::kable(df, digits = 3)
| CSB |
0.603 |
0.274 |
2.111 |
1.350 |
0.523 |
0.547 |
0.853 |
0.682 |
0.727 |
0.841 |
0.630 |
0.661 |
0.960 |
NA |
| MAA |
0.718 |
0.403 |
1.416 |
1.698 |
0.564 |
0.635 |
0.498 |
0.327 |
0.570 |
0.469 |
0.411 |
0.674 |
0.617 |
NA |
| CG |
0.550 |
0.252 |
2.244 |
1.450 |
0.826 |
0.554 |
0.502 |
1.015 |
0.676 |
1.001 |
0.522 |
0.438 |
0.594 |
NA |
| UF |
0.677 |
0.344 |
2.057 |
1.793 |
0.618 |
0.414 |
0.607 |
0.586 |
0.554 |
0.887 |
0.416 |
0.257 |
0.441 |
NA |
| CTH |
0.713 |
0.379 |
2.101 |
1.785 |
0.826 |
0.553 |
0.811 |
0.606 |
0.616 |
0.982 |
0.688 |
0.621 |
0.641 |
NA |
| SC |
0.684 |
0.322 |
2.507 |
1.620 |
0.826 |
0.554 |
0.812 |
0.607 |
0.811 |
0.567 |
0.581 |
0.534 |
0.659 |
NA |
| LSC |
0.783 |
0.461 |
1.489 |
1.673 |
0.618 |
0.414 |
0.607 |
0.454 |
0.607 |
0.607 |
0.679 |
0.459 |
0.542 |
NA |
| TT |
0.669 |
0.335 |
1.763 |
1.496 |
0.643 |
0.431 |
0.631 |
0.472 |
0.631 |
0.632 |
0.472 |
0.579 |
0.898 |
NA |
| AE |
0.678 |
0.354 |
2.142 |
1.590 |
0.743 |
0.498 |
0.730 |
0.546 |
0.730 |
0.730 |
0.546 |
0.568 |
0.595 |
NA |
| FSS |
0.939 |
0.352 |
2.111 |
1.350 |
0.917 |
0.615 |
0.901 |
0.674 |
0.900 |
0.901 |
0.674 |
0.701 |
0.811 |
0.593 |
Summarizing assessment model
fits
(df <- summariseFits(list('9-multi model(36 items)'=fit4multi,
'2nd-order model (36 items)'=fit4second)))
chisq df chisq/df gfi agfi cfi tli srmr rmsea
9-multi model(36 items) 2369.737 558 4.247 0.904 0.886 0.871 0.854 0.102 0.091
2nd-order model (36 items) 2771.034 585 4.737 0.888 0.873 0.844 0.832 0.111 0.097
rmsea.ci
9-multi model(36 items) "[0.087; 0.094]"
2nd-order model (36 items) "[0.094; 0.101]"
knitr::kable(df, digits = 3)
| 9-multi model(36 items) |
2369.737 |
558 |
4.247 |
0.904 |
0.886 |
0.871 |
0.854 |
0.102 |
0.091 |
[0.087; 0.094] |
| 2nd-order model (36 items) |
2771.034 |
585 |
4.737 |
0.888 |
0.873 |
0.844 |
0.832 |
0.111 |
0.097 |
[0.094; 0.101] |
IRT
on the FSS-BR (36 itens and 9 factors - original version)
library(mirt)
mirt4mult <- mirt(fss, 1, itemtype='graded')
Iteration: 1, Log-Lik: -18440.765, Max-Change: 1.45623Iteration: 2, Log-Lik: -18219.381, Max-Change: 0.43701Iteration: 3, Log-Lik: -18192.163, Max-Change: 0.15387Iteration: 4, Log-Lik: -18185.794, Max-Change: 0.14540Iteration: 5, Log-Lik: -18182.827, Max-Change: 0.07083Iteration: 6, Log-Lik: -18180.951, Max-Change: 0.04134Iteration: 7, Log-Lik: -18178.833, Max-Change: 0.02731Iteration: 8, Log-Lik: -18178.197, Max-Change: 0.02398Iteration: 9, Log-Lik: -18177.718, Max-Change: 0.02040Iteration: 10, Log-Lik: -18176.636, Max-Change: 0.01143Iteration: 11, Log-Lik: -18176.565, Max-Change: 0.00766Iteration: 12, Log-Lik: -18176.518, Max-Change: 0.00657Iteration: 13, Log-Lik: -18176.419, Max-Change: 0.01042Iteration: 14, Log-Lik: -18176.401, Max-Change: 0.00265Iteration: 15, Log-Lik: -18176.395, Max-Change: 0.00183Iteration: 16, Log-Lik: -18176.386, Max-Change: 0.00233Iteration: 17, Log-Lik: -18176.383, Max-Change: 0.00300Iteration: 18, Log-Lik: -18176.380, Max-Change: 0.00070Iteration: 19, Log-Lik: -18176.380, Max-Change: 0.00080Iteration: 20, Log-Lik: -18176.378, Max-Change: 0.00103Iteration: 21, Log-Lik: -18176.378, Max-Change: 0.00093Iteration: 22, Log-Lik: -18176.377, Max-Change: 0.00131Iteration: 23, Log-Lik: -18176.377, Max-Change: 0.00039Iteration: 24, Log-Lik: -18176.377, Max-Change: 0.00098Iteration: 25, Log-Lik: -18176.377, Max-Change: 0.00165Iteration: 26, Log-Lik: -18176.376, Max-Change: 0.00033Iteration: 27, Log-Lik: -18176.376, Max-Change: 0.00083Iteration: 28, Log-Lik: -18176.376, Max-Change: 0.00041Iteration: 29, Log-Lik: -18176.376, Max-Change: 0.00103Iteration: 30, Log-Lik: -18176.375, Max-Change: 0.00031Iteration: 31, Log-Lik: -18176.375, Max-Change: 0.00027Iteration: 32, Log-Lik: -18176.375, Max-Change: 0.00069Iteration: 33, Log-Lik: -18176.375, Max-Change: 0.00102Iteration: 34, Log-Lik: -18176.375, Max-Change: 0.00081Iteration: 35, Log-Lik: -18176.375, Max-Change: 0.00024Iteration: 36, Log-Lik: -18176.375, Max-Change: 0.00061Iteration: 37, Log-Lik: -18176.375, Max-Change: 0.00030Iteration: 38, Log-Lik: -18176.375, Max-Change: 0.00076Iteration: 39, Log-Lik: -18176.375, Max-Change: 0.00023Iteration: 40, Log-Lik: -18176.375, Max-Change: 0.00020Iteration: 41, Log-Lik: -18176.375, Max-Change: 0.00051Iteration: 42, Log-Lik: -18176.375, Max-Change: 0.00075Iteration: 43, Log-Lik: -18176.375, Max-Change: 0.00060Iteration: 44, Log-Lik: -18176.375, Max-Change: 0.00018Iteration: 45, Log-Lik: -18176.375, Max-Change: 0.00045Iteration: 46, Log-Lik: -18176.375, Max-Change: 0.00022Iteration: 47, Log-Lik: -18176.374, Max-Change: 0.00056Iteration: 48, Log-Lik: -18176.374, Max-Change: 0.00017Iteration: 49, Log-Lik: -18176.374, Max-Change: 0.00074Iteration: 50, Log-Lik: -18176.374, Max-Change: 0.00022Iteration: 51, Log-Lik: -18176.374, Max-Change: 0.00055Iteration: 52, Log-Lik: -18176.374, Max-Change: 0.00029Iteration: 53, Log-Lik: -18176.374, Max-Change: 0.00074Iteration: 54, Log-Lik: -18176.374, Max-Change: 0.00022Iteration: 55, Log-Lik: -18176.374, Max-Change: 0.00019Iteration: 56, Log-Lik: -18176.374, Max-Change: 0.00049Iteration: 57, Log-Lik: -18176.374, Max-Change: 0.00015Iteration: 58, Log-Lik: -18176.374, Max-Change: 0.00064Iteration: 59, Log-Lik: -18176.374, Max-Change: 0.00019Iteration: 60, Log-Lik: -18176.374, Max-Change: 0.00048Iteration: 61, Log-Lik: -18176.374, Max-Change: 0.00025Iteration: 62, Log-Lik: -18176.374, Max-Change: 0.00064Iteration: 63, Log-Lik: -18176.374, Max-Change: 0.00019Iteration: 64, Log-Lik: -18176.374, Max-Change: 0.00017Iteration: 65, Log-Lik: -18176.374, Max-Change: 0.00043Iteration: 66, Log-Lik: -18176.374, Max-Change: 0.00063Iteration: 67, Log-Lik: -18176.374, Max-Change: 0.00043Iteration: 68, Log-Lik: -18176.374, Max-Change: 0.00013Iteration: 69, Log-Lik: -18176.374, Max-Change: 0.00033Iteration: 70, Log-Lik: -18176.374, Max-Change: 0.00016Iteration: 71, Log-Lik: -18176.374, Max-Change: 0.00041Iteration: 72, Log-Lik: -18176.374, Max-Change: 0.00012Iteration: 73, Log-Lik: -18176.374, Max-Change: 0.00054Iteration: 74, Log-Lik: -18176.374, Max-Change: 0.00016Iteration: 75, Log-Lik: -18176.374, Max-Change: 0.00040Iteration: 76, Log-Lik: -18176.374, Max-Change: 0.00021Iteration: 77, Log-Lik: -18176.374, Max-Change: 0.00054Iteration: 78, Log-Lik: -18176.374, Max-Change: 0.00016Iteration: 79, Log-Lik: -18176.374, Max-Change: 0.00014Iteration: 80, Log-Lik: -18176.374, Max-Change: 0.00036Iteration: 81, Log-Lik: -18176.374, Max-Change: 0.00053Iteration: 82, Log-Lik: -18176.374, Max-Change: 0.00037Iteration: 83, Log-Lik: -18176.374, Max-Change: 0.00011Iteration: 84, Log-Lik: -18176.374, Max-Change: 0.00028Iteration: 85, Log-Lik: -18176.374, Max-Change: 0.00014Iteration: 86, Log-Lik: -18176.374, Max-Change: 0.00035Iteration: 87, Log-Lik: -18176.374, Max-Change: 0.00051Iteration: 88, Log-Lik: -18176.374, Max-Change: 0.00035Iteration: 89, Log-Lik: -18176.374, Max-Change: 0.00010Iteration: 90, Log-Lik: -18176.374, Max-Change: 0.00027Iteration: 91, Log-Lik: -18176.374, Max-Change: 0.00013Iteration: 92, Log-Lik: -18176.374, Max-Change: 0.00033Iteration: 93, Log-Lik: -18176.374, Max-Change: 0.00049Iteration: 94, Log-Lik: -18176.374, Max-Change: 0.00033Iteration: 95, Log-Lik: -18176.374, Max-Change: 0.00010
(param4mult <- coef(mirt4mult, simplify=T, IRTpars=T))
$items
a b1 b2 b3 b4
Q1 1.296 -3.883 -2.631 -1.334 1.006
Q2 1.144 -2.481 -0.945 0.079 2.070
Q3 0.871 -4.775 -1.522 0.140 2.827
Q4 1.839 -3.017 -1.684 -0.583 1.262
Q5 1.429 -3.235 -1.440 -0.308 1.568
Q6 0.449 -4.835 -1.601 0.112 4.494
Q7 1.421 -2.916 -1.370 -0.331 1.560
Q8 0.535 -3.869 -1.515 0.855 3.801
Q9 0.742 -4.466 -2.392 -0.426 2.485
Q10 1.630 -2.987 -1.734 -0.560 0.809
Q11 1.408 -2.827 -1.232 -0.172 1.666
Q12 0.365 -7.800 -2.156 1.218 7.040
Q13 0.542 -6.455 -1.843 0.640 4.863
Q14 1.370 -2.524 -1.398 -0.617 1.235
Q15 1.725 -3.289 -1.569 -0.439 1.374
Q16 1.174 -2.909 -0.954 -0.068 1.674
Q17 1.353 -2.874 -1.133 0.103 2.049
Q18 0.769 -3.475 -1.108 0.785 3.352
Q19 0.945 -4.147 -1.984 -0.412 1.840
Q20 1.080 -3.355 -1.579 -0.366 1.337
Q21 1.334 -3.008 -1.399 0.059 1.969
Q22 0.673 -5.290 -1.548 0.016 3.953
Q23 1.668 -2.775 -1.341 -0.263 1.436
Q24 2.405 -3.047 -1.417 -0.432 1.078
Q25 1.319 -3.116 -1.181 -0.166 1.911
Q26 1.466 -2.547 -1.070 -0.046 1.752
Q27 2.021 -2.426 -1.238 -0.101 1.434
Q28 0.892 -3.345 -1.202 0.366 2.067
Q29 0.456 -5.829 -1.428 1.049 5.106
Q30 1.879 -3.270 -1.643 -0.640 0.738
Q31 1.074 -4.706 -1.941 -0.453 2.022
Q32 1.591 -2.936 -1.332 -0.565 1.072
Q33 1.815 -3.381 -1.637 -0.609 1.399
Q34 0.763 -3.490 -1.457 -0.257 1.862
Q35 0.636 -4.230 -1.782 0.233 2.971
Q36 1.383 -3.323 -1.801 -0.686 0.656
$means
F1
0
$cov
F1
F1 1
library(matrixStats)
df <- data.frame(param4mult$items)
df <- cbind(df, bx = matrixStats::rowMeans2(as.matrix(df), cols = c(2,3,4,5)))
df <- rbind(df, M = colMeans(df))
df <- rbind(df, SD = matrixStats::colSds(as.matrix(df)))
knitr::kable(df, digits = 3)
| Q1 |
1.296 |
-3.883 |
-2.631 |
-1.334 |
1.006 |
-1.711 |
| Q2 |
1.144 |
-2.481 |
-0.945 |
0.079 |
2.070 |
-0.319 |
| Q3 |
0.871 |
-4.775 |
-1.522 |
0.140 |
2.827 |
-0.833 |
| Q4 |
1.839 |
-3.017 |
-1.684 |
-0.583 |
1.262 |
-1.006 |
| Q5 |
1.429 |
-3.235 |
-1.440 |
-0.308 |
1.568 |
-0.854 |
| Q6 |
0.449 |
-4.835 |
-1.601 |
0.112 |
4.494 |
-0.457 |
| Q7 |
1.421 |
-2.916 |
-1.370 |
-0.331 |
1.560 |
-0.764 |
| Q8 |
0.535 |
-3.869 |
-1.515 |
0.855 |
3.801 |
-0.182 |
| Q9 |
0.742 |
-4.466 |
-2.392 |
-0.426 |
2.485 |
-1.200 |
| Q10 |
1.630 |
-2.987 |
-1.734 |
-0.560 |
0.809 |
-1.118 |
| Q11 |
1.408 |
-2.827 |
-1.232 |
-0.172 |
1.666 |
-0.641 |
| Q12 |
0.365 |
-7.800 |
-2.156 |
1.218 |
7.040 |
-0.424 |
| Q13 |
0.542 |
-6.455 |
-1.843 |
0.640 |
4.863 |
-0.699 |
| Q14 |
1.370 |
-2.524 |
-1.398 |
-0.617 |
1.235 |
-0.826 |
| Q15 |
1.725 |
-3.289 |
-1.569 |
-0.439 |
1.374 |
-0.981 |
| Q16 |
1.174 |
-2.909 |
-0.954 |
-0.068 |
1.674 |
-0.564 |
| Q17 |
1.353 |
-2.874 |
-1.133 |
0.103 |
2.049 |
-0.464 |
| Q18 |
0.769 |
-3.475 |
-1.108 |
0.785 |
3.352 |
-0.112 |
| Q19 |
0.945 |
-4.147 |
-1.984 |
-0.412 |
1.840 |
-1.176 |
| Q20 |
1.080 |
-3.355 |
-1.579 |
-0.366 |
1.337 |
-0.991 |
| Q21 |
1.334 |
-3.008 |
-1.399 |
0.059 |
1.969 |
-0.595 |
| Q22 |
0.673 |
-5.290 |
-1.548 |
0.016 |
3.953 |
-0.717 |
| Q23 |
1.668 |
-2.775 |
-1.341 |
-0.263 |
1.436 |
-0.736 |
| Q24 |
2.405 |
-3.047 |
-1.417 |
-0.432 |
1.078 |
-0.955 |
| Q25 |
1.319 |
-3.116 |
-1.181 |
-0.166 |
1.911 |
-0.638 |
| Q26 |
1.466 |
-2.547 |
-1.070 |
-0.046 |
1.752 |
-0.478 |
| Q27 |
2.021 |
-2.426 |
-1.238 |
-0.101 |
1.434 |
-0.583 |
| Q28 |
0.892 |
-3.345 |
-1.202 |
0.366 |
2.067 |
-0.529 |
| Q29 |
0.456 |
-5.829 |
-1.428 |
1.049 |
5.106 |
-0.275 |
| Q30 |
1.879 |
-3.270 |
-1.643 |
-0.640 |
0.738 |
-1.204 |
| Q31 |
1.074 |
-4.706 |
-1.941 |
-0.453 |
2.022 |
-1.269 |
| Q32 |
1.591 |
-2.936 |
-1.332 |
-0.565 |
1.072 |
-0.940 |
| Q33 |
1.815 |
-3.381 |
-1.637 |
-0.609 |
1.399 |
-1.057 |
| Q34 |
0.763 |
-3.490 |
-1.457 |
-0.257 |
1.862 |
-0.836 |
| Q35 |
0.636 |
-4.230 |
-1.782 |
0.233 |
2.971 |
-0.702 |
| Q36 |
1.383 |
-3.323 |
-1.801 |
-0.686 |
0.656 |
-1.288 |
| M |
1.207 |
-3.690 |
-1.534 |
-0.116 |
2.215 |
-0.781 |
| SD |
0.492 |
1.171 |
0.367 |
0.526 |
1.392 |
0.342 |
plot(mirt4mult, type='infotrace')

plot(mirt4mult, type='info')

plot(mirt4mult, type='infoSE')

Unidimensional short
model of FSS (original)
Structure validity
library(lavaan)
mdl4uni <- 'FSS =~ Q19 + Q29 + Q12 + Q22 + Q32 + Q6 + Q7 + Q17 + Q36'
fss.df <- fss[,c("Q19","Q29","Q12","Q22","Q32","Q6","Q7","Q17","Q36")]
fitMeasures(cfa(mdl4uni, fss.df), fit.measures = "all")
npar fmin chisq df
18.000 0.391 309.972 27.000
pvalue baseline.chisq baseline.df baseline.pvalue
0.000 602.091 36.000 0.000
cfi tli nnfi rfi
0.500 0.334 0.334 0.314
nfi pnfi ifi rni
0.485 0.364 0.508 0.500
logl unrestricted.logl aic bic
-5122.014 -4967.027 10280.027 10351.693
ntotal bic2 rmsea rmsea.ci.lower
396.000 10294.578 0.163 0.147
rmsea.ci.upper rmsea.pvalue rmr rmr_nomean
0.179 0.000 0.152 0.152
srmr srmr_bentler srmr_bentler_nomean crmr
0.139 0.139 0.139 0.155
crmr_nomean srmr_mplus srmr_mplus_nomean cn_05
0.155 0.139 0.139 52.246
cn_01 gfi agfi pgfi
60.997 0.822 0.704 0.493
mfi ecvi
0.700 0.874
fit4uni <- cfa(mdl4uni, data=fss.df, estimator="WLSMV", std.lv=T)
standardizedSolution(fit4uni)
lhs op rhs est.std se z pvalue ci.lower ci.upper
1 FSS =~ Q19 0.516 0.049 10.526 0.000 0.420 0.612
2 FSS =~ Q29 0.146 0.069 2.113 0.035 0.011 0.281
3 FSS =~ Q12 0.605 0.050 12.043 0.000 0.506 0.703
4 FSS =~ Q22 0.699 0.048 14.472 0.000 0.604 0.794
5 FSS =~ Q32 0.180 0.056 3.205 0.001 0.070 0.290
6 FSS =~ Q6 0.519 0.051 10.173 0.000 0.419 0.619
7 FSS =~ Q7 0.339 0.061 5.545 0.000 0.219 0.459
8 FSS =~ Q17 0.091 0.070 1.289 0.198 -0.047 0.228
9 FSS =~ Q36 0.039 0.058 0.675 0.500 -0.075 0.153
10 Q19 ~~ Q19 0.734 0.051 14.502 0.000 0.635 0.833
11 Q29 ~~ Q29 0.979 0.020 48.744 0.000 0.939 1.018
12 Q12 ~~ Q12 0.634 0.061 10.437 0.000 0.515 0.753
13 Q22 ~~ Q22 0.511 0.068 7.572 0.000 0.379 0.644
14 Q32 ~~ Q32 0.968 0.020 48.026 0.000 0.928 1.007
15 Q6 ~~ Q6 0.731 0.053 13.807 0.000 0.627 0.835
16 Q7 ~~ Q7 0.885 0.041 21.359 0.000 0.804 0.966
17 Q17 ~~ Q17 0.992 0.013 77.980 0.000 0.967 1.017
18 Q36 ~~ Q36 0.998 0.005 219.315 0.000 0.990 1.007
19 FSS ~~ FSS 1.000 0.000 NA NA 1.000 1.000
fitMeasures(fit4uni, fit.measures = "all")
npar fmin chisq
18.000 0.386 305.503
df pvalue chisq.scaled
27.000 0.000 344.051
df.scaled pvalue.scaled chisq.scaling.factor
27.000 0.000 0.903
baseline.chisq baseline.df baseline.pvalue
639.744 36.000 0.000
baseline.chisq.scaled baseline.df.scaled baseline.pvalue.scaled
460.266 36.000 0.000
baseline.chisq.scaling.factor cfi tli
1.423 0.539 0.385
nnfi rfi nfi
0.385 0.363 0.522
pnfi ifi rni
0.392 0.545 0.539
cfi.scaled tli.scaled cfi.robust
0.253 0.004 NA
tli.robust nnfi.scaled nnfi.robust
NA 0.004 NA
rfi.scaled nfi.scaled ifi.scaled
0.003 0.252 0.268
rni.scaled rni.robust rmsea
0.253 NA 0.162
rmsea.ci.lower rmsea.ci.upper rmsea.pvalue
0.146 0.178 0.000
rmsea.scaled rmsea.ci.lower.scaled rmsea.ci.upper.scaled
0.172 0.156 0.189
rmsea.pvalue.scaled rmsea.robust rmsea.ci.lower.robust
0.000 NA NA
rmsea.ci.upper.robust rmsea.pvalue.robust rmr
NA NA 0.152
rmr_nomean srmr srmr_bentler
0.152 0.137 0.137
srmr_bentler_nomean crmr crmr_nomean
0.137 0.153 0.153
srmr_mplus srmr_mplus_nomean cn_05
0.137 0.137 52.864
cn_01 gfi agfi
61.721 0.910 0.849
pgfi mfi ecvi
0.546 0.703 0.865
gammaHat adjGammaHat baseline.rmsea gammaHat.scaled
0.8648375 0.7747292 0.2060519 0.8489549
adjGammaHat.scaled baseline.rmsea.scaled
0.7482582 0.1727307
library(semPlot)
semPlot::semPaths(
fit4uni, "std", curvePivot = T, layout = "circle",
rotation = 3, fade = T, intercepts = T, residuals = T,
sizeLat = 4, sizeLat2 = 3, sizeMan = 4, esize = 1.5, asize = 1.5,
edge.label.position = 0.55, levels = c(9.75,10,10,10))

Internal consistency
library(semTools)
(df <- semTools::reliability(fit4uni))
FSS
alpha 0.6029174
omega 0.5696327
omega2 0.5696327
omega3 0.5070341
avevar 0.1745423
knitr::kable(df, digits = 3)
| alpha |
0.603 |
| omega |
0.570 |
| omega2 |
0.570 |
| omega3 |
0.507 |
| avevar |
0.175 |
Unidimensional
short alternative model (FSS-short)
Structure validity
library(lavaan)
mdl4alt <- 'FSS =~ Q10 + Q11 + Q30 + Q4 + Q23 + Q24 + Q7 + Q26 + Q27'
fss.df <- fss[,c("Q10","Q11","Q30","Q4","Q23","Q24","Q7","Q26","Q27")]
fitMeasures(cfa(mdl4alt, fss.df), fit.measures = "all")
npar fmin chisq df
18.000 0.177 140.536 27.000
pvalue baseline.chisq baseline.df baseline.pvalue
0.000 1123.431 36.000 0.000
cfi tli nnfi rfi
0.896 0.861 0.861 0.833
nfi pnfi ifi rni
0.875 0.656 0.896 0.896
logl unrestricted.logl aic bic
-4501.450 -4431.182 9038.899 9110.565
ntotal bic2 rmsea rmsea.ci.lower
396.000 9053.450 0.103 0.087
rmsea.ci.upper rmsea.pvalue rmr rmr_nomean
0.120 0.000 0.053 0.053
srmr srmr_bentler srmr_bentler_nomean crmr
0.055 0.055 0.055 0.061
crmr_nomean srmr_mplus srmr_mplus_nomean cn_05
0.061 0.055 0.055 114.030
cn_01 gfi agfi pgfi
133.331 0.921 0.869 0.553
mfi ecvi
0.866 0.446
fit4alt <-cfa(mdl4alt, data=fss.df, estimator="WLSMV", std.lv=T)
standardizedSolution(fit4alt)
lhs op rhs est.std se z pvalue ci.lower ci.upper
1 FSS =~ Q10 0.570 0.041 13.770 0 0.489 0.651
2 FSS =~ Q11 0.511 0.047 10.870 0 0.419 0.603
3 FSS =~ Q30 0.633 0.039 16.239 0 0.557 0.710
4 FSS =~ Q4 0.608 0.038 16.162 0 0.534 0.681
5 FSS =~ Q23 0.650 0.035 18.378 0 0.580 0.719
6 FSS =~ Q24 0.751 0.027 27.479 0 0.698 0.805
7 FSS =~ Q7 0.488 0.047 10.401 0 0.396 0.580
8 FSS =~ Q26 0.591 0.045 13.111 0 0.502 0.679
9 FSS =~ Q27 0.689 0.035 19.908 0 0.621 0.757
10 Q10 ~~ Q10 0.675 0.047 14.301 0 0.583 0.768
11 Q11 ~~ Q11 0.739 0.048 15.409 0 0.645 0.833
12 Q30 ~~ Q30 0.599 0.049 12.123 0 0.502 0.696
13 Q4 ~~ Q4 0.631 0.046 13.800 0 0.541 0.720
14 Q23 ~~ Q23 0.578 0.046 12.587 0 0.488 0.668
15 Q24 ~~ Q24 0.435 0.041 10.591 0 0.355 0.516
16 Q7 ~~ Q7 0.762 0.046 16.634 0 0.672 0.852
17 Q26 ~~ Q26 0.651 0.053 12.226 0 0.547 0.755
18 Q27 ~~ Q27 0.526 0.048 11.025 0 0.432 0.619
19 FSS ~~ FSS 1.000 0.000 NA NA 1.000 1.000
fitMeasures(fit4alt, fit.measures = "all")
npar fmin chisq
18.000 0.056 44.359
df pvalue chisq.scaled
27.000 0.019 85.491
df.scaled pvalue.scaled chisq.scaling.factor
27.000 0.000 0.556
baseline.chisq baseline.df baseline.pvalue
1729.140 36.000 0.000
baseline.chisq.scaled baseline.df.scaled baseline.pvalue.scaled
872.265 36.000 0.000
baseline.chisq.scaling.factor cfi tli
2.025 0.990 0.986
nnfi rfi nfi
0.986 0.966 0.974
pnfi ifi rni
0.731 0.990 0.990
cfi.scaled tli.scaled cfi.robust
0.930 0.907 NA
tli.robust nnfi.scaled nnfi.robust
NA 0.907 NA
rfi.scaled nfi.scaled ifi.scaled
0.869 0.902 0.931
rni.scaled rni.robust rmsea
0.930 NA 0.040
rmsea.ci.lower rmsea.ci.upper rmsea.pvalue
0.017 0.061 0.759
rmsea.scaled rmsea.ci.lower.scaled rmsea.ci.upper.scaled
0.074 0.057 0.092
rmsea.pvalue.scaled rmsea.robust rmsea.ci.lower.robust
0.013 NA NA
rmsea.ci.upper.robust rmsea.pvalue.robust rmr
NA NA 0.052
rmr_nomean srmr srmr_bentler
0.052 0.055 0.055
srmr_bentler_nomean crmr crmr_nomean
0.055 0.061 0.061
srmr_mplus srmr_mplus_nomean cn_05
0.055 0.055 358.190
cn_01 gfi agfi
419.183 0.989 0.981
pgfi mfi ecvi
0.593 0.978 0.203
gammaHat adjGammaHat baseline.rmsea gammaHat.scaled
0.9903524 0.9839207 0.3450616 0.9682200
adjGammaHat.scaled baseline.rmsea.scaled
0.9470334 0.2425058
library(semPlot)
semPlot::semPaths(
fit4alt, "std", curvePivot = T, layout = "circle",
rotation = 3, fade = T, intercepts = T, residuals = T,
sizeLat = 4, sizeLat2 = 3, sizeMan = 4, esize = 1.5, asize = 1.5,
edge.label.position = 0.55, levels = c(9.75,10,10,10))

Internal consistency
library(semTools)
(df <- semTools::reliability(fit4alt))
FSS
alpha 0.8394996
omega 0.8401415
omega2 0.8401415
omega3 0.8388554
avevar 0.3710501
knitr::kable(df, digits = 3)
| alpha |
0.839 |
| omega |
0.840 |
| omega2 |
0.840 |
| omega3 |
0.839 |
| avevar |
0.371 |
Summarizing
assessment model fits in short-versions
df <- summariseFits(list('uni model'=fit4uni, 'alt model'=fit4alt))
knitr::kable(df, digits = 3)
| uni model |
305.503 |
27 |
11.315 |
0.91 |
0.849 |
0.539 |
0.385 |
0.137 |
0.162 |
[0.146; 0.178] |
| alt model |
44.359 |
27 |
1.643 |
0.989 |
0.981 |
0.99 |
0.986 |
0.055 |
0.04 |
[0.017; 0.061] |
IRT
on the FSS-short version (9 itens - alternative version)
library(mirt)
mirt4alt <- mirt(fss[,c("Q10","Q11","Q30","Q4","Q23","Q24","Q7","Q26","Q27")],
1, itemtype='graded')
Iteration: 1, Log-Lik: -4417.229, Max-Change: 2.26553Iteration: 2, Log-Lik: -4323.610, Max-Change: 0.71319Iteration: 3, Log-Lik: -4302.027, Max-Change: 0.39904Iteration: 4, Log-Lik: -4294.821, Max-Change: 0.14063Iteration: 5, Log-Lik: -4291.548, Max-Change: 0.10464Iteration: 6, Log-Lik: -4289.921, Max-Change: 0.07147Iteration: 7, Log-Lik: -4288.981, Max-Change: 0.04729Iteration: 8, Log-Lik: -4288.553, Max-Change: 0.03426Iteration: 9, Log-Lik: -4288.318, Max-Change: 0.02522Iteration: 10, Log-Lik: -4288.078, Max-Change: 0.01181Iteration: 11, Log-Lik: -4288.049, Max-Change: 0.00804Iteration: 12, Log-Lik: -4288.032, Max-Change: 0.00535Iteration: 13, Log-Lik: -4288.016, Max-Change: 0.00349Iteration: 14, Log-Lik: -4288.013, Max-Change: 0.00318Iteration: 15, Log-Lik: -4288.011, Max-Change: 0.00195Iteration: 16, Log-Lik: -4288.008, Max-Change: 0.00179Iteration: 17, Log-Lik: -4288.007, Max-Change: 0.00104Iteration: 18, Log-Lik: -4288.007, Max-Change: 0.00093Iteration: 19, Log-Lik: -4288.006, Max-Change: 0.00035Iteration: 20, Log-Lik: -4288.006, Max-Change: 0.00016Iteration: 21, Log-Lik: -4288.006, Max-Change: 0.00011Iteration: 22, Log-Lik: -4288.006, Max-Change: 0.00044Iteration: 23, Log-Lik: -4288.006, Max-Change: 0.00050Iteration: 24, Log-Lik: -4288.006, Max-Change: 0.00012Iteration: 25, Log-Lik: -4288.006, Max-Change: 0.00010Iteration: 26, Log-Lik: -4288.006, Max-Change: 0.00030Iteration: 27, Log-Lik: -4288.006, Max-Change: 0.00009
param4alt <- coef(mirt4alt, simplify=T, IRTpars=T)
library(matrixStats)
df <- data.frame(param4alt$items)
df <- cbind(df, bx = matrixStats::rowMeans2(as.matrix(df), cols = c(2,3,4,5)))
df <- rbind(df, M = colMeans(df))
df <- rbind(df, SD = matrixStats::colSds(as.matrix(df)))
knitr::kable(df, digits = 3)
| Q10 |
1.397 |
-3.357 |
-1.928 |
-0.596 |
0.940 |
-1.235 |
| Q11 |
1.262 |
-3.090 |
-1.335 |
-0.162 |
1.823 |
-0.691 |
| Q30 |
1.725 |
-3.531 |
-1.762 |
-0.670 |
0.822 |
-1.285 |
| Q4 |
1.824 |
-3.071 |
-1.729 |
-0.595 |
1.320 |
-1.019 |
| Q23 |
1.793 |
-2.725 |
-1.311 |
-0.239 |
1.441 |
-0.708 |
| Q24 |
2.612 |
-3.050 |
-1.417 |
-0.416 |
1.110 |
-0.943 |
| Q7 |
1.151 |
-3.420 |
-1.578 |
-0.360 |
1.828 |
-0.883 |
| Q26 |
1.461 |
-2.592 |
-1.074 |
-0.027 |
1.791 |
-0.475 |
| Q27 |
1.944 |
-2.535 |
-1.278 |
-0.085 |
1.527 |
-0.593 |
| M |
1.686 |
-3.041 |
-1.490 |
-0.350 |
1.400 |
-0.870 |
| SD |
0.416 |
0.341 |
0.260 |
0.223 |
0.360 |
0.263 |
plot(mirt4alt, type='infotrace')

plot(mirt4alt, type='info')

plot(mirt4alt, type='infoSE')
